package com.example.aihub.controller;

import com.example.aihub.dto.ApiResponse;
import com.example.aihub.entity.PostCategory;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 分类控制器，处理与帖子分类相关的请求
 */
@RestController
@RequestMapping("/api/categories")
public class CategoryController {

    /**
     * 获取所有可用的帖子分类
     * @return 包含所有分类的响应
     */
    @GetMapping
    public ResponseEntity<?> getAllCategories() {
        // 获取所有分类枚举值
        List<PostCategory> categories = Arrays.asList(PostCategory.values());
        
        // 创建包含分类名称和显示名称的列表
        List<CategoryDTO> categoryDTOs = categories.stream()
                .map(category -> new CategoryDTO(category.name(), category.getDisplayName()))
                .collect(Collectors.toList());
        
        return ResponseEntity.ok(new ApiResponse(true, "获取分类列表成功", categoryDTOs));
    }

    /**
     * 内部类，用于封装分类信息返回给前端
     */
    private static class CategoryDTO {
        private String name; // 分类枚举名称
        private String displayName; // 分类显示名称

        public CategoryDTO(String name, String displayName) {
            this.name = name;
            this.displayName = displayName;
        }

        // Getters
        public String getName() {
            return name;
        }

        public String getDisplayName() {
            return displayName;
        }
    }
}